diff --git a/swh/web/templates/api/apidoc.html b/swh/web/templates/api/apidoc.html index 05f2a8f5..24e26408 100644 --- a/swh/web/templates/api/apidoc.html +++ b/swh/web/templates/api/apidoc.html @@ -1,212 +1,221 @@ {% extends "layout.html" %} {% comment %} Copyright (C) 2015-2020 The Software Heritage developers See the AUTHORS file at the top-level directory of this distribution License: GNU Affero General Public License version 3, or any later version See top-level LICENSE file for more information {% endcomment %} {% load swh_templatetags %} {% block title %}{{ heading }} – Software Heritage API {% endblock %} {% block navbar-content %} <nav class="bread-crumbs"> <ul> <li><a href="/api/"><h4>Web API</h4></a></li> <li class="bc-no-root"><i class="mdi mdi-menu-right mdi-fw" aria-hidden="true"></i></li> <li class="bc-no-root"><a href="/api/1/">endpoints</a></li> {% for endpoint in endpoint_path %} <li class="bc-no-root"><i class="mdi mdi-menu-right mdi-fw" aria-hidden="true"></i></li> {% if endpoint.name != 'stat' and endpoint.name != 'vault' and endpoint.path != 'vault/revision/doc/' %} <li class="bc-no-root"><a href="{{ '/api/1/'|add:endpoint.path }}">{{ endpoint.name }}</a></li> {% else %} <li class="bc-no-root"><span>{{ endpoint.name }}</span></li> {% endif %} {% endfor %} </ul> </nav> {% endblock %} {% block content %} <div class='swh-apidoc'> {% if description %} <div> <h4> Description </h4> {{ description | docstring_display | safe }} </div> {% endif %} {% if response_data is not None %} <div> <h4>Request</h4> <pre><strong>{{ request.method }}</strong> {{ request.build_absolute_uri }}</pre> <hr /> <h4>Response</h4> {% if status_code != 200 %} <h5>Status Code</h5> <pre>{{ status_code }}</pre> {% endif %} {% if headers_data %} <h5>Headers</h5> {% for header_name, header_value in headers_data.items %} <pre><strong>{{ header_name }}</strong> {{ header_value | urlize_header_links | safe }}</pre> {% endfor %} {% endif %} <h5>Body</h5> <pre><code class="json">{{ response_data | urlize_links_and_mails | safe }}</code></pre> </div> {% endif %} <hr /> {% if urls and urls|length > 0 %} <div> <table class="m-x-auto table"> <thead> <tr> <th>URL</th> <th>Allowed Methods</th> </tr> </thead> <tbody> {% for url in urls %} <tr> <td>{{ url.rule | docstring_display | safe }}</td> <td>{{ url.methods | dictsort:0 | join:', ' }}</td> </tr> {% endfor %} </tbody> </table> </div> <hr /> {% endif %} {% if args and args|length > 0 %} <div> <h4> Arguments </h4> {% for arg in args %} <dl class="row"> <dt class="col col-md-2 text-right"> {{ arg.name }} ({{ arg.type }}) </dt> <dd class="col col-md-9"> {{ arg.doc | docstring_display | safe }} </dd> </dl> {% endfor %} </div> <hr /> {% endif %} {% if params and params|length > 0 %} <div> <h4> Query parameters </h4> {% for param in params %} <dl class="row"> <dt class="col col-md-2 text-right"> {{ param.name }} ({{ param.type }}) </dt> <dd class="col col-md-9"> {{ param.doc | docstring_display | safe }} </dd> </dl> {% endfor %} </div> <hr /> {% endif %} {% if reqheaders and reqheaders|length > 0 %} <div> <h4> Request headers </h4> {% for header in reqheaders %} <dl class="row"> <dt class="col col-md-2 text-right"> {{ header.name }} </dt> <dd class="col col-md-9"> {{ header.doc | docstring_display | safe }} </dd> </dl> {% endfor %} </div> <hr /> {% endif %} {% if input_type %} <div> <h4> Request data </h4> <dl class="row"> <dt class="col col-md-2 text-right"> {{ input_type }} </dt> <dd class="col col-md-9"> <p> {% if input_type == 'array' and inputs_list == '' %} {{ inputs.0.doc | safe }} {% elif input_type == 'array' and inputs_list != '' %} an array of objects containing the following keys: {% elif input_type == 'octet stream' %} raw data as an octet stream {% elif input_type == 'object' %} an object containing the following keys: {% endif %} {% if inputs_list != '' %} {{ inputs_list | docstring_display | safe }} {% endif %} </p> </dd> </dl> </div> <hr /> {% endif %} {% if resheaders and resheaders|length > 0 %} <div> <h4> Response headers </h4> {% for header in resheaders %} <dl class="row"> <dt class="col col-md-2 text-right"> {{ header.name }} </dt> <dd class="col col-md-9"> {{ header.doc | docstring_display | safe }} </dd> </dl> {% endfor %} </div> <hr /> {% endif %} {% if return_type %} <div> <h4> Returns </h4> <dl class="row"> <dt class="col col-md-2 text-right"> {{ return_type }} </dt> <dd class="col col-md-9"> <p> {% if return_type == 'array' and returns_list == '' %} {{ returns.0.doc | safe }} {% elif return_type == 'array' and returns_list != '' %} an array of objects containing the following keys: {% elif return_type == 'octet stream' %} raw data as an octet stream {% elif return_type == 'object' %} an object containing the following keys: {% endif %} {% if returns_list != '' %} {{ returns_list | docstring_display | safe }} {% endif %} </p> </dd> </dl> </div> <hr /> {% endif %} {% if status_codes and status_codes|length > 0 %} <div> <h4> HTTP status codes </h4> {% for status in status_codes %} <dl class="row"> <dt class="col col-md-2 text-right"> {{ status.code }} </dt> <dd class="col col-md-9"> {{ status.doc | docstring_display | safe }} </dd> </dl> {% endfor %} </div> <hr /> {% endif %} {% if examples and examples|length > 0 %} <div> <h4> Examples </h4> {% for example in examples %} <dl class="row"> <dt class="col col-md-2"></dt> <dd class="col col-md-9"> <a href="{{ example }}">{{ example }}</a> </dd> </dl> {% endfor %} </div> {% endif %} </div> <script> swh.webapp.initPage('api'); swh.webapp.highlightCode(false); + // restore Web API links removed by code highlighting + setTimeout(function() { + $('.hljs-string').each(function(idx, element) { + var text = $(element).text(); + if (text.match(/^"http.*:\/\/.*/)) { + $(element).html('<a class="hljs-string" href=' + text + '>' + text + '</a>') + } + }); + }, 500); </script> {% endblock %}